草庐IT

Android SurfaceView Canvas 用线程绘制

全部标签

C#多线程无符号递增

我想从多个线程递增一个无符号整数。我知道Interlocked.Increment,但它不处理无符号整数。我可以使用lock(),但出于性能原因我宁愿不使用。仅以正常方式递增它是否线程安全?偶尔的增量丢失也没关系,因为它只用于统计。我不希望值(value)被破坏。 最佳答案 您说您出于性能原因不想使用lock-但您测试过吗?一个无争议的锁(这很可能是,从它的声音来看)是非常便宜的。当涉及到线程时,我通常会选择“明显正确”而不是“聪明且可能性能更好”(一般来说,但尤其是线程)。在锁定和不锁定的情况下对您的应用进行基准测试,看看您是否能

c# - 多个线程读取同一个文件

我有一个需要多次读取的xml文件。我正在尝试使用Parallel.ForEach来加快此过程,因为读入的数据与读入的顺序无关。数据仅用于填充对象。我的问题是,即使我每次都在线程中以只读方式打开文件,它也会提示它是由另一个程序打开的。(我没有在文本编辑器或任何东西中打开它:))如何从同一个文件完成多次读取?编辑:文件约为18KB,非常小。它被阅读了大约1,800次。谢谢 最佳答案 如果要多个线程读取同一个文件,需要指定FileShare.Read:using(varstream=File.Open("theFile.xml",File

c# - 如何在 Winform 中使用多线程?

我是多线程新手。我有一个带有标签和进度条的winform。我想显示处理结果。首先,我使用Application.DoEvents()方法。但是,我发现表格很僵硬。然后我在MSDN上阅读了一些关于多线程的文章。其次,我使用BackgroundWorker来完成它。this.bwForm.DoWork+=(o,arg)=>{DoConvert();};this.bwForm.RunWorkerAsync();表单不会卡住,我可以在处理时拖放。不幸的是,它会抛出InvalidOperationException。所以我必须使用这个。Control.CheckForIllegalCrossTh

c# - 你如何将一个对象放在另一个线程中?

在c#中有什么方法可以将对象放在另一个线程中吗?我所发现的只是如何在另一个线程中实际执行一些方法。我实际上想做的是在一个新线程中实例化一个对象,以便以后使用它提供的方法。希望你能帮助我,俄语 最佳答案 对象并不真正属于线程。如果您有一个对象的引用,您可以从多个线程访问它。这可能会导致无法从多个线程访问的对象出现问题,例如(几乎所有)System.Windows.Forms类,以及对COM对象的访问。如果您只想从同一线程访问一个对象,请在该对象(或包装对象)中存储对该线程的引用,并通过该线程执行方法。

c# - 如果前一个线程仍然很忙,如何让 Timer 跳过滴答

我创建了一个Windows服务,它应该每60秒检查数据库中的某个表是否有新行。对于添加的每一行,我都需要在服务器上进行一些繁重的处理,有时可能需要超过60秒。我在我的服务中创建了一个Timer对象,它每60秒计时一次并调用所需的方法。由于我不希望此计时器在处理找到的新行时计时,我将该方法包装在lock{}block中,因此其他线程无法访问它。看起来像这样:TimerserviceTimer=newTimer();serviceTimer.Interval=60;serviceTimer.Elapsed+=newElapsedEventHandler(serviceTimer_Elaps

c# - 为什么可以在同一个类中创建的另一个线程中访问局部变量?

我真的找不到关于这个确切主题的任何内容,所以如果问题已经存在,请引导我走向正确的方向。根据我对.NET的了解,不可能跨不同线程访问变量(如果该语句有误,请纠正我,这正是我在某处读到的)。然而,现在在这个代码示例中,它似乎不应该工作:classMyClass{publicintvariable;internalMyClass(){Threadthread=newThread(newThreadStart(DoSomething));thread.IsBackground=true;thread.Start();}publicvoidDoSomething(){variable=0;for

c# - C#中的多线程CPU使用率

我的程序使用预定数量的线程,每个线程独立工作。我使用i7-2600CPU,但我关闭了超线程模块,因此它在4个内核上运行4个线程。当我用1个线程运行程序时,CPU使用率为25%,这是完美的,因为1个线程已被完全使用,但当我运行4或3个线程时,我只得到60%的CPU,为什么?就像我之前提到的那样,线程是完全独立的(没有锁也没有争用),当我用1个线程运行程序4次时,我得到100%的CPU使用率(即当它的4个进程每个进程有1个线程时我得到了正确的CPU使用率)有什么想法吗?更多信息:在处理所有需要的数据时,我没有使用I/O加载到内存中,每个线程在处理之前加载自己的数据。我确实从数据库加载数据(

c# - 如何从工作线程中调用 UI 线程上的方法?

这个问题在这里已经有了答案:关闭11年前。我正在从事一个使用以下技术的项目:C#(.NET4.0)WCFPrism4我目前正在使用代理生成的Begin/End方法对我们的Web服务之一进行异步调用。调用成功,客户端能够在工作线程上接收Web服务的响应。收到响应后,我将继续引发事件。订阅事件的类继续使用PRISM请求UI导航:Application.Current.Dispatcher.BeginInvoke(newAction(()=>this.RegionManager.RequestNavigate(RegionNames.LoginContentRegion,projectSel

c# - 在关闭不同线程时在其他窗口后面发送的应用程序窗口 (C#)

我正在用C#.NET编写Windows窗体应用程序启动时,应用程序会显示一个在单独线程中运行的启动画面。当启动画面显示时,主应用程序正在初始化。主应用程序完成初始化后,将显示应用程序的主窗体,初始屏幕仍显示在顶部。到目前为止一切都符合预期。然后,启动画面关闭,导致该线程退出。出于某种原因,此时主应用程序窗口被发送到所有其他打开的窗口之后,特别是您首先单击.exe文件运行应用程序的Windows资源管理器窗口!是什么导致window像这样突然“跳到”后面? 最佳答案 尝试在线程关闭时在主窗口上调用.Activate()。它从未处于事件

c# - 绘制有向无环图 : Minimizing edge crossing?

如果没有像EfficientSugiyama这样的图形绘制算法,以树形式布置DAG中的顶点(即顶部没有内边的顶点,仅依赖于下一层的顶点等)是相当简单的。但是,是否有一种简单的算法可以最大限度地减少边缘交叉?(对于某些图,可能无法完全消除边缘交叉。)一张图说一千个字,那么有没有一种算法会建议somethingwithoutcrossingedges.(comparedtothis)。编辑:结果我已经接受了Senthil的建议graphviz/dot——快速浏览一下文档确认这很容易useitasalibraryorexternaltool,和theoutputformatissurpris